home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / scrasm / genmap.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-03-09  |  3.4 KB  |  99 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <memory.h>
  4. #include <stdlib.h>
  5.  
  6. #define WIDTH   255
  7.  
  8. #define MAPNAME "Diagonal"
  9. #define FILENAME "%s.MAP"
  10. char    fn[100] = FILENAME;
  11. typedef unsigned char BYTE;
  12. typedef unsigned short int WORD;
  13. typedef BYTE    ROW[WIDTH];
  14.  
  15. ROW     r;
  16.  
  17. #define MAGIC_NUM       100
  18. #define SQUARE_WIDTH    16
  19. #define SQUARE_HEIGHT   16
  20. #define SCREEN_WIDTH    320
  21. #define SCREEN_HEIGHT   200
  22. #define VIRTUAL_WIDTH   352
  23. #define VIRTUAL_HEIGHT  240
  24. typedef struct MAPHEADER {
  25.         BYTE    name[12];       /* 12    Includes [n]=0 and [n+1]=26 */
  26.         WORD    width;          /*  2                                */
  27.         WORD    height;         /*  2                                */
  28.         WORD    extent;         /*  2                                */
  29.         WORD    off_x1;         /*  2                                */
  30.         WORD    off_y1;         /*  2                                */
  31.         WORD    off_x2;         /*  2                                */
  32.         WORD    off_y2;         /*  2                                */
  33.         WORD    x_wrap;         /*  2                                */
  34.         WORD    y_wrap;         /*  2                                */
  35.         WORD    magic;          /*  2                                */
  36.         } MAPHEADER, far *LPMAPHEADER;
  37. MAPHEADER mh;
  38.  
  39. void main(int argc, char *argv[])
  40.         {
  41.         FILE    *fp;
  42.         int     i,j;
  43.         BYTE    b;
  44.         int     width = WIDTH;
  45.         int     height = WIDTH;
  46.  
  47.         if (argc > 1) {
  48.                 width = atoi(argv[1]);
  49.                 if (width > WIDTH)
  50.                         width = WIDTH;
  51.                 printf("Width = %d\n",width);
  52.                 height=width;
  53.                 if (argc > 2) {
  54.                         height = atoi(argv[2]);
  55.                         if (height > WIDTH)
  56.                                 height = WIDTH;
  57.                         printf("Height = %d\n",height);
  58.                         }
  59.                 }
  60.  
  61.         sprintf(fn,FILENAME,MAPNAME);
  62.         fp = fopen(fn,"wb");
  63.         if (!fp) {
  64.                 printf("Couldn't open %s for write.\n",fn);
  65.                 exit(1);
  66.                 }
  67.  
  68.         memset(&mh, 0xFF, sizeof(MAPHEADER));   /* Will reveal missing initializing */
  69.         strcpy((char *)mh.name,MAPNAME);
  70.         mh.name[8]=0;
  71.         mh.name[9]=26;  /* Ctrl-Z */
  72.         mh.width = (WORD)width;
  73.         mh.height = (WORD)height;
  74.         mh.extent = (WORD)((WORD)width * (WORD)height);
  75.         mh.off_x1 = (WORD)0;
  76.         mh.off_y1 = (WORD)0;
  77.         mh.off_x2 = (WORD)(((VIRTUAL_WIDTH / SQUARE_WIDTH) - 1) % width);
  78.         mh.off_y2 = (WORD)((((VIRTUAL_HEIGHT / SQUARE_HEIGHT) - 1) % height) * width);
  79.         mh.x_wrap = (WORD)width;
  80.         mh.y_wrap = (WORD)height;
  81.         mh.magic = MAGIC_NUM;
  82.         fwrite(&mh, 1, sizeof(MAPHEADER), fp);
  83.  
  84.         for (i = 0; i<width; i++) {
  85.                 b = (BYTE)(i%width);
  86.                 for (j = 0; j<width; j++) {
  87.                         r[j] = b;
  88.                         b = (BYTE)(((int)b+1) % width);
  89.                         }
  90.                 r[0]=1;
  91.                 if (i == 0) r[0]=0;
  92.                 fwrite(r, width,1, fp);
  93.                 printf("Map row %d\r",i);
  94.                 }
  95.         fclose(fp);
  96.         printf("All done!    \n");
  97.         exit(0);
  98.         }
  99.